function Queue() {
  this.dataStore = [];
  this.offer = offer;
  this.poll = poll;
  this.execNext = execNext;
  this.debug = false;
  this.startDebug = startDebug;

  function offer(element) {
    if (this.debug) {
      console.log('Offered a Queued Function.');
    }
    if (typeof element === 'function') {
      this.dataStore.push(element);
    } else {
      console.log('You must offer a function.');
    }
  }

  function poll() {
    if (this.debug) {
      console.log('Polled a Queued Function.');
    }
    return this.dataStore.shift();
  }

  function execNext() {
    var nextfunc = this.poll();
    if (nextfunc !== undefined) {
      if (this.debug) {
        console.log('Run a Queued Function.');
      }
      nextfunc();
    }
  }

  function startDebug() {
    this.debug = true;
  }

}

var queue = new Queue();